package br.com.fsa.aplication.Gui;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.com.fsa.aplication.Exception.ConectionException;
import br.com.fsa.aplication.Model.CarroVO;
import br.com.fsa.aplication.Model.LogisticaVO;
import br.com.fsa.aplication.Services.CarroService;

@ManagedBean (name="CadCarro")
@SessionScoped
public class CarroMBean {

	private CarroVO carro = new CarroVO();
	private CarroService carroService = new CarroService();
	private List<CarroVO> carros = new ArrayList<CarroVO>();
	private CarroVO carroSelected = new CarroVO();
	private boolean desabilitarExcluir = true;

	public CarroMBean() {
		try {
			carros = carroService.lista();
		} catch (ConectionException e) {
			e.printStackTrace();
		}
	}
	

	public CarroVO getCarro() {
		return carro;
	}

	public void setCarro(CarroVO carro) {
		this.carro = carro;
	}

	public List<CarroVO> getCarros() {
		return carros;
	}

	public void setCarros(List<CarroVO> carros) {
		this.carros = carros;
	}

	public CarroVO getCarroSelected() {
		return carroSelected;
	}

	public void setCarroSelected(CarroVO carroSelected) {
		this.carroSelected = carroSelected;
	}

	public boolean isDesabilitarExcluir() {
		return desabilitarExcluir;
	}

	public void setDesabilitarExcluir(boolean desabilitarExcluir) {
		this.desabilitarExcluir = desabilitarExcluir;
	}

	public void save() {
		try {
			System.out.println("metodo salvar");

			HashMap dto = new HashMap();
			dto.put("objeto", carro);
			dto = carroService.salvar(dto);
			if (dto.get("resposta").getClass().getSimpleName()
					.equals("CarroVO")) {
				carros = carroService.lista();
				FacesContext context = FacesContext.getCurrentInstance();  
				context.addMessage(null, new FacesMessage("Salvo com Sucesso", "Carro " + carro.getModelo() + " - " + carro.getPlaca()));
				limparCampos();
				System.out.println("persistencia"); 
			}

		} catch (ConectionException e) {
			e.printStackTrace();
		}

	}

	public void clean() {
		try {
			System.out.println("metodo excluir");
			HashMap dto = new HashMap();
			dto.put("objeto", getCarro());
			carroService.remover(dto);
			limparCampos();
			carros = carroService.lista();
		} catch (ConectionException e) {
			e.printStackTrace();
		}
	}

	public void visualizarSelecionado() {
		System.out.println("metodo visualizarSelecionado");
		setCarro(getCarroSelected());
		setDesabilitarExcluir(false);
	}

	public void limparCampos() {

		setCarro(new CarroVO());
		setCarroSelected(new CarroVO());
		setDesabilitarExcluir(true);
	}
}
